<?php
/**
 * redis缓存,存字符串或者数组
 * 使用缓存之后,修改数据之后注意清空当前数据缓存
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/9/23
 * Time: 15:18
 */

namespace app\share\model;


class RedisCache
{
    public function __construct()
    {
        if( extension_loaded("redis") === FALSE )
        {
            echo json_encode(['code'=>-1007, 'msg'=>"redis扩展没有安装好"]);die;
        }
        $this->redis = new \Redis();
        $ret = $this->redis->connect(config('redis_conf')['redis_ip'],config('redis_conf')['redis_port']);
        if( $ret === FALSE)
        {
            echo json_encode(['code'=>-1008, 'msg'=>"redis连接超时"]);die;
        }
        //如果没有密码则不需要这一行
        $ret1 = $this->redis->auth(config('redis_conf')['redis_pwd']);
        if( $ret1 === FALSE )
        {
            echo json_encode(['code'=>-1008, 'msg'=>"redis密码认证失败"]);die;
        }
    }
    /**
     * 字符串或数组缓存redis
     * @param string $key 键名
     * @param mixed $value 键值
     * @param int $exprie 过期时间 0:永不过期,单位秒
     * @return bool
     */
    public function set( $key, $value, $exprie = 0 )
    {
        $value = serialize( $value );
        if($exprie == 0)
        {
            $set = $this->redis->set( $key, $value );
        }else
        {
            $set =  $this->redis->setex($key, $exprie, $value);
        }

        return $set;
    }
    /**
     * 获取缓存
     * @param string $key 键名
     * @return mixed, 假为bool(false)
     */
    public function get( $key )
    {
        return unserialize($this->redis->get( $key ));
    }
    /**
     * 清除缓存
     * @param string $key 键名
     * 如果键被删除成功，命令执行后输出 (integer) 1，否则将输出 (integer) 0
     */
    public function del( $key )
    {
        return $this->redis->del( $key );
    }

}